package org.cell.server.common;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;

public interface IDBHelper {

	/**
	 * 建立到MySql的连接
	 * 
	 * @return Connection
	 */
	public abstract Connection getConnection();

	/**
	 * 创建Statement对象
	 * 
	 * @param con
	 * @return Statement
	 */
	public abstract Statement getStm(Connection con);

	/**
	 * 执行DML
	 * 
	 * @param con
	 * @param sql
	 * @param params
	 */
	public abstract void update(PreparedStatement pstm, String sql,
			List<Parameter> params);

	/**
	 * 查询操作
	 * 
	 * @param con
	 * @param pstm
	 * @param sql
	 * @return 结果集
	 */
	public abstract ResultSet find(PreparedStatement pstm, String sql);

	/**
	 * 查询操作
	 * 
	 * @param con
	 * @param pstm
	 * @param sql
	 * @return 结果集
	 */
	public abstract ResultSet find(PreparedStatement pstm, String sql,
			List<Parameter> params);

	/**
	 * 执行query操作
	 * 
	 * @param stm
	 * @param sql
	 * @return ResultSet
	 */
	public abstract ResultSet getRs(Statement stm, String sql);

	/**
	 * 执行update操作
	 * 
	 * @param stm
	 * @param sql
	 * @return 影响行数
	 */
	public abstract int update(Statement stm, String sql);

	/**
	 * 执行delete操作
	 * 
	 * @param stm
	 * @param sql
	 * @return 若第一个结果为一个ResultSet对象则返回true，否则返回false
	 */
	public abstract boolean delete(Statement stm, String sql);

	/**
	 * 打印提交的sql语句
	 * 
	 * @return
	 */
	public abstract String getPrepareSql(String sql, List<Parameter> params);

	/**
	 * 关闭Connection并初始为null
	 * 
	 * @param con
	 */
	public abstract void close(Connection con);

	/**
	 * 关闭Statement并初始为null
	 * 
	 * @param stm
	 */
	public abstract void close(Statement stm);

	/**
	 * 关闭ResultSet并初始为null
	 * 
	 * @param rs
	 */
	public abstract void close(ResultSet rs);

	/**
	 * 关闭PreparedStatement并初始为null
	 * 
	 * @param pstm
	 */
	public abstract void close(PreparedStatement pstm);

}